import type { RouteRecordRaw } from "vue-router";
import type { MenuOption } from "naive-ui";
import type { Icon5Name } from "./icon";

type extraMenuOption = MenuOption & { iconName: Icon5Name; translation: string };

/** 权限信息 */
export interface Permission {
  id: number | string /** 该条记录的唯一标识 */;
  name: string /** 该条记录的名称 */;
  code: string /** code 值，前端可作为路由的name */;
  parentId: number | null /** 父级路由的id */;
  path: string /** 路由地址 */;
  redirect: string /** 重定向 */;
  icon: Icon5Name /** icon 图标 */;
  component: string /** 组件 */;
  children: Permission[] /** 子级 */;
  widgets: Widget[] /** 按钮权限 */;
  auth: boolean; //接口权限
  description: string; //描述
  show: boolean; //是否展示
  enable: boolean; //是否启用
  order: number; //排序
  translation: string; //国际化翻译
}

export interface Widget {
  id: number | string /** 唯一标识 */;
  code: string /** code 码 */;
  name: string /** 名称 */;
  routeId: number;
}

export interface PermissionState {
  permissions: Permission[];
  accessRoutes: RouteRecordRaw[];
  menus: extraMenuOption[];
}
